Apple II
Technical Notes
_____________________________________________________________________________
                                                  Developer Technical Support


Apple IIc
#6:    Buffering Blues

Revised by:    Mike Askins                                      November 1988
Written by:    Guillermo Ortiz                                   January 1987

This Technical Note describes changes on the memory-expandable IIc which 
affect the procedures for enabling keyboard and serial input buffering.
_____________________________________________________________________________

When the IIc firmware was reorganized to accommodate the memory expansion card 
in slot 4, the mouse moved to slot 7, thus causing some screen holes to be 
reassigned.  This change may software which uses keyboard or serial input 
buffering to crash.

The following list shows the changes in the locations which are used for 
enabling keyboard and serial input buffering:

            Original &
Name        3.5 ROM    Expandable IIc    Comment
typhed       $5FA          $5FA          ;buffer the keyboard? NO CHANGE
twkey        $5FF          $5FC          ;storage pointer for type-ahead buffer
trkey        $6FF          $6FC *        ;retrieve pointer for type-ahead buffer

aciabuf      $4FF          $4FC          ;Owner of serial buffer, if any
twser        $57F          $57C          ;storage pointer for serial buffer
trser        $67F          $67C          ;retrieve pointer for serial buffer

*    In the version 3 ROM (original "memory-expandable" IIc) this pointer 
is still $6FF which causes, among other things, the Terminal Mode to 
be inoperative.  Revision 4 of the IIc firmware fixes this bug.

We can not emphasize enough the need for carefully checking the version of the 
machine on which a program is running.  It is also important to pay attention 
to the now obvious fact that even in the Apple IIc things can (and most 
probably will) move around, making any hard-coded slot assignment a sure 
source of incompatibility.  To ensure compatibility, scan the slots.

The Apple IIc Technical Reference Manual describes how to enable buffering.  
Using serial buffering as an example, the pertinent instructions in the manual 
should now be understood as meaning:

Using Serial Buffering Transparently

 If (machineID = "Memory Expandable IIc") then
   begin
     aciabuf = $04FC;     {Newest IIc with Expanded Memory Capabilities,}
     twser = $057C;       {ROM versions 3 and 4.}
     trser = $067C
   end
 else
    begin
      aciabuf = $04FF;    {Original IIc and 3.5 ROM IIc}
      twser = $057F;
      trser = $067F
    end;

 Set_Location aciabuf to $C1 or $C2.
 Set_Locations twser and trser to $0. 

Using Serial Interrupts Through Firmware

 Set_Location aciabuf to a value other than $C1 or $C2


Further Reference
o    Apple IIc Technical Reference Manual 
o    Apple IIc Technical Note #7, Existing Versions
o    Apple II Miscellaneous Technical Note #7, Apple II Family Identification

